package com.xuecheng.media.service;


import com.xuecheng.base.model.PageParam;
import com.xuecheng.base.model.RestResponse;
import com.xuecheng.content.model.po.PageResult;
import com.xuecheng.media.model.dto.QueryMediaParamsDto;
import com.xuecheng.media.model.dto.UpLoadMediaFilesDto;
import com.xuecheng.media.model.dto.UpLoadMediaFilesParamDto;
import com.xuecheng.media.model.po.MediaFiles;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @description 媒资文件管理业务类
 * @author Mr.M
 * @date 2022/9/10 8:55
 * @version 1.0
 */
public interface MediaFileService {

 /**
  * @description 媒资文件查询方法
  * @param pageParams 分页参数
  * @param queryMediaParamsDto 查询条件
  * @return com.xuecheng.base.model.PageResult<com.xuecheng.media.model.po.MediaFiles>
  * @author Mr.M
  * @date 2022/9/10 8:57
 */
 public PageResult<MediaFiles> queryMediaFiels(Long companyId, PageParam pageParams, QueryMediaParamsDto queryMediaParamsDto);


 /**
  *
  * @param companyid 公司id
  * @param paramDto 请求的参数（即文件的信息）
  * @param localFilePath 文件保存路径
  * @return
  */
 //上传minio和数据库,如果objectname为空，那么就按默认的年月日路径存储到minio，如果不为空，则存储到objectname路径
 public UpLoadMediaFilesDto uploadfiles(Long companyid, UpLoadMediaFilesParamDto paramDto,
  String localFilePath,String objectname);
 //将文件传到数据库
 public MediaFiles addfilesToDb(Long companyid,UpLoadMediaFilesParamDto paramDto,
                                String filedm5,String bucket,String objectname);

 /**
  * 上传文件前的检查
  * @param fileMd5
  * @return
  */
 public RestResponse<Boolean> checkfiles(String fileMd5);

 /**
  * 上传分块文件前的检查
  * @param fileMd5
  * @param chunkindex
  * @return
  */
 public RestResponse<Boolean> checkchunkfiles(String fileMd5,int chunkindex);

 /**
  * 上传分块文件
  * @param fileMd5
  * @param chunkindex
  * @param LocalChunkPath
  */
 public RestResponse<Boolean> uploadChunk(String fileMd5, int chunkindex,String LocalChunkPath);

 /**
  * 合并分块文件并且上传到minio和数据库
  * @param upLoadMediaFilesParamDto 上传文件参数
  * @param companyid
  * @param filemd5
  * @param chunktotal
  * @return
  */
 public  RestResponse<Boolean>  mergechunks(UpLoadMediaFilesParamDto upLoadMediaFilesParamDto,
 Long companyid,String filemd5,int chunktotal) ;
}
